iT邦幫忙

2024 iThome 鐵人賽

DAY 10
0
生成式 AI

從零開始,打造一個生成式 AI 平台,打破程式學習的高牆系列 第 10 篇

思維鏈設計 1:讓 AI 分析程式碼的標題、目的

  • 分享至 

  • xImage
  •  

思維鏈設計 1:讓 AI 分析程式碼的標題、目的

https://ithelp.ithome.com.tw/upload/images/20240910/20168979aD4ttdXw9E.png

思維鏈的設計重點就是,如何透過 AI 思維將原始資料轉換為目標資料
我們的終極目標是透過程式碼,生成一份教學文件,忘了可以參見第二章

第二章當中,我們討論出教學文件的資料結構長這樣

interface Tutorial {
    title: string;
    description: string;
    steps: Step[];
}

基本上就是

  1. 標題

  2. 描述

  3. 每個教學步驟

思維練的設計方法

很簡單,親自先做一次,也就是自己親自將撰寫一份程式碼教學文件

然後去審思自己是如何撰寫這份文件的

將你自己撰寫的過程給文字化

好比說

  1. 我會先研究這個程式碼的功能是什麼

  2. 我會先想一下這個教學文件的標題要叫啥

  3. 將程式碼拆解成許多模塊,然後開始研究要先從哪麼模塊開始教學

  4. …

恭喜你,你已經順便把 LLM 的工作流給設計出來了

接下來讓 LLM 復刻整個工作流程即可,不過為了節省成本、提升效果,我會再做這兩件事情

1. 聚合

由於我們提出來的任務可能過於簡單,好比說

  1. 我會先研究這個程式碼的功能是什麼

  2. 我會先想一下這個教學文件的標題要叫啥

這兩件事其實都很簡單,LLM 其實能夠一次生成完畢,我們便可以將這兩個任務合成為同個任務

Prompt:

你是一個能幫助生成教學文件的 AI。
請針對以下程式碼生成教學文件,並提供一個標題和描述。
並依造以下 json 格式輸出:
```
{
  "title": "教學文件的標題",
  "description": "整個教學文件的功能與說明"
}

這時如果我們輸入一個程式碼

function add(a: number, b: number): number {
  return a + b;
}

很好,直接跑結果

{   
  "title": "數字相加函式教學",   
  "description": "這份教學文件介紹了如何在 TypeScript 中定義一個簡單的加法函數。函數 `add` 接受兩個數字作為參數,並返回它們的和。這個函數展示了 TypeScript 中如何使用靜態類型來確保輸入和輸出的一致性。"
}

2. 疊代

這個生成結果基本符合我們對標題和描述的期望,它包含了 title 和 description。

不過生成文字上可能太繁瑣,我們可能只需要他大致說明即可,不需要很細部講解整個程式碼

此時我們便可以針對 prompt 進行疊代

你是一個能幫助生成教學文件的 AI。
請針對以下程式碼生成簡潔的教學文件,並提供一個簡明的標題和描述。
請避免對程式碼進行詳細的講解,僅需簡要說明功能。

3. 降複雜度

有時候,我們反覆疊代個四五次仍然無法有效提升生成效果

又或者你發現疊代雖然效果有提升,但是提升效益非常不明顯

此時你必須得意識到該任務難度過高,已經超過 AI 的負擔能力了

這時候你應該將這個任務拆解成兩個或更多的任務

4. 避免過度擬合

什麼是過度擬合?

這是一種機器學習專有術語,表示模型過於專注於訓練資料中的細節或噪音,從而在新資料上的表現變差。這個概念同樣適用於 LLM 的 prompt 設計。

簡單來講就是你的 prompt 太過 focus 在某個細節上,導致模型在其他情境下的表現反而變差。例如,若你的 prompt 過於具體或狹隘,LLM 可能無法靈活應對不同的需求,進而限制了生成結果的通用性。

好比說,正常的 prompt 是這樣

請用簡單的語言解釋一下什麼是機器學習。

過度擬合 prompt:

請詳細解釋機器學習,尤其是監督式學習的數學公式部分,包括所有常見公式的推導過程和步驟,且只能使用 300 字內的範圍來解釋。

它過度強調某個細節(數學公式、字數限制),可能導致模型在其他方面(例如簡明解釋、靈活性)表現不佳。如此設計的 prompt 會讓模型僅適應極少數的情境,無法在更多元的問題上取得理想效果。

5. 同時準備好多個測試資料

不要從頭到尾只用同一個資料做 prompt 的測試,很容易發生我剛剛提到的過度擬合

你可以先用一個資料將 prompt 疊代到八成滿意度,最後再透過多個測試資料完成最後的 80 到 99 的最後一哩路


上一篇
思維鏈的奧秘:構建 AI 的思考過程
下一篇
AI 的開發,從定義成功開始,如何創建有效的測試資料
系列文
從零開始,打造一個生成式 AI 平台,打破程式學習的高牆 共 17 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言